package com.ruoyi.common.utils;
import com.alibaba.druid.pool.DruidDataSource;
import java.sql.Connection;
import java.sql.SQLException;

public class DruidConnection {
    private static DruidDataSource dataSource;

    static {
        // 初始化连接池
        dataSource = new DruidDataSource();

        // 基本配置
        dataSource.setUrl("jdbc:mysql://bj-cynosdbmysql-grp-fgj2gb4o.sql.tencentcdb.com:27788/ceshia?useSSL=false&serverTimezone=UTC");
        dataSource.setUsername("root");
        dataSource.setPassword("aaaAAA2133156!");
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");

        // 连接池配置
        dataSource.setInitialSize(5);      // 初始化连接数
        dataSource.setMinIdle(5);          // 最小空闲连接数
        dataSource.setMaxActive(20);       // 最大连接数
        dataSource.setMaxWait(60000);      // 获取连接最大等待时间(毫秒)

        // 其他优化配置
        dataSource.setValidationQuery("SELECT 1"); // 连接有效性检查SQL
        dataSource.setTestWhileIdle(true);        // 空闲时检查连接有效性
        dataSource.setTestOnBorrow(true);         // 获取连接时检查有效性
        dataSource.setTestOnReturn(false);         // 归还连接时不检查

        // 连接超时配置
        dataSource.setRemoveAbandoned(true);      // 是否移除泄露连接
        dataSource.setRemoveAbandonedTimeout(1800); // 泄露连接超时时间(秒)
        dataSource.setLogAbandoned(true);         // 记录泄露日志
    }

    public static Connection getConnection() throws SQLException {
        return dataSource.getConnection();
    }

    public static void close() {
        if (dataSource != null) {
            dataSource.close();
        }
    }
}